using System;
using Rdl;

namespace GTame.ReportParser
{

    public class ChartType
    {

        private ActionType _Action;
        private string _Bookmark;
        private CategoryAxisType _CategoryAxis;
        private CategoryGroupingsType _CategoryGroupings;
        private ChartDataType _ChartData;
        private ChartTypeChartElementOutput _ChartElementOutput;
        private CustomPropertiesType _CustomProperties;
        private string _DataElementName;
        private ChartTypeDataElementOutput _DataElementOutput;
        private string _DataSetName;
        private FiltersType _Filters;
        private string _Height;
        private Nullable<bool> _KeepTogether;
        private string _Label;
        private string _Left;
        private LegendType _Legend;
        private string _LinkToChild;
        private string _NoRows;
        private Nullable<bool> _PageBreakAtEnd;
        private Nullable<bool> _PageBreakAtStart;
        private ChartTypePalette _Palette;
        private PlotAreaType _PlotArea;
        private Nullable<uint> _PointWidth;
        private SeriesGroupingsType _SeriesGroupings;
        private StyleType _Style;
        private ChartTypeSubtype _Subtype;
        private ThreeDPropertiesType _ThreeDProperties;
        private TitleType _Title;
        private string _ToolTip;
        private string _Top;
        private ChartTypeType _Type;
        private ValueAxisType _ValueAxis;
        private VisibilityType _Visibility;
        private string _Width;
        private Nullable<uint> _ZIndex;
        private string nameField;

        public ActionType Action
        {
            get
            {
                if (_Action == null)
                    _Action = new ActionType();
                return _Action;
            }
            set
            {
                _Action = value;
            }
        }

        public string Bookmark
        {
            get
            {
                return _Bookmark;
            }
            set
            {
                _Bookmark = value;
            }
        }

        public CategoryAxisType CategoryAxis
        {
            get
            {
                if (_CategoryAxis == null)
                    _CategoryAxis = new CategoryAxisType();
                return _CategoryAxis;
            }
            set
            {
                _CategoryAxis = value;
            }
        }

        public CategoryGroupingsType CategoryGroupings
        {
            get
            {
                if (_CategoryGroupings == null)
                    _CategoryGroupings = new CategoryGroupingsType();
                return _CategoryGroupings;
            }
            set
            {
                _CategoryGroupings = value;
            }
        }

        public ChartDataType ChartData
        {
            get
            {
                if (_ChartData == null)
                    _ChartData = new ChartDataType();
                return _ChartData;
            }
            set
            {
                _ChartData = value;
            }
        }

        public ChartTypeChartElementOutput ChartElementOutput
        {
            get
            {
                return _ChartElementOutput;
            }
            set
            {
                _ChartElementOutput = value;
            }
        }

        public CustomPropertiesType CustomProperties
        {
            get
            {
                if (_CustomProperties == null)
                    _CustomProperties = new CustomPropertiesType();
                return _CustomProperties;
            }
            set
            {
                _CustomProperties = value;
            }
        }

        public string DataElementName
        {
            get
            {
                return _DataElementName;
            }
            set
            {
                _DataElementName = value;
            }
        }

        public ChartTypeDataElementOutput DataElementOutput
        {
            get
            {
                return _DataElementOutput;
            }
            set
            {
                _DataElementOutput = value;
            }
        }

        public string DataSetName
        {
            get
            {
                return _DataSetName;
            }
            set
            {
                _DataSetName = value;
            }
        }

        public FiltersType Filters
        {
            get
            {
                if (_Filters == null)
                    _Filters = new FiltersType();
                return _Filters;
            }
            set
            {
                _Filters = value;
            }
        }

        public string Height
        {
            get
            {
                return _Height;
            }
            set
            {
                _Height = value;
            }
        }

        public Nullable<bool> KeepTogether
        {
            get
            {
                return _KeepTogether;
            }
            set
            {
                _KeepTogether = value;
            }
        }

        public string Label
        {
            get
            {
                return _Label;
            }
            set
            {
                _Label = value;
            }
        }

        public string Left
        {
            get
            {
                return _Left;
            }
            set
            {
                _Left = value;
            }
        }

        public LegendType Legend
        {
            get
            {
                if (_Legend == null)
                    _Legend = new LegendType();
                return _Legend;
            }
            set
            {
                _Legend = value;
            }
        }

        public string LinkToChild
        {
            get
            {
                return _LinkToChild;
            }
            set
            {
                _LinkToChild = value;
            }
        }

        public string Name
        {
            get
            {
                return nameField;
            }
            set
            {
                nameField = value;
            }
        }

        public string NoRows
        {
            get
            {
                return _NoRows;
            }
            set
            {
                _NoRows = value;
            }
        }

        public Nullable<bool> PageBreakAtEnd
        {
            get
            {
                return _PageBreakAtEnd;
            }
            set
            {
                _PageBreakAtEnd = value;
            }
        }

        public Nullable<bool> PageBreakAtStart
        {
            get
            {
                return _PageBreakAtStart;
            }
            set
            {
                _PageBreakAtStart = value;
            }
        }

        public ChartTypePalette Palette
        {
            get
            {
                return _Palette;
            }
            set
            {
                _Palette = value;
            }
        }

        public PlotAreaType PlotArea
        {
            get
            {
                if (_PlotArea == null)
                    _PlotArea = new PlotAreaType();
                return _PlotArea;
            }
            set
            {
                _PlotArea = value;
            }
        }

        public Nullable<uint> PointWidth
        {
            get
            {
                return _PointWidth;
            }
            set
            {
                _PointWidth = value;
            }
        }

        public SeriesGroupingsType SeriesGroupings
        {
            get
            {
                if (_SeriesGroupings == null)
                    _SeriesGroupings = new SeriesGroupingsType();
                return _SeriesGroupings;
            }
            set
            {
                _SeriesGroupings = value;
            }
        }

        public StyleType Style
        {
            get
            {
                if (_Style == null)
                    _Style = new StyleType();
                return _Style;
            }
            set
            {
                _Style = value;
            }
        }

        public ChartTypeSubtype Subtype
        {
            get
            {
                return _Subtype;
            }
            set
            {
                _Subtype = value;
            }
        }

        public ThreeDPropertiesType ThreeDProperties
        {
            get
            {
                if (_ThreeDProperties == null)
                    _ThreeDProperties = new ThreeDPropertiesType();
                return _ThreeDProperties;
            }
            set
            {
                _ThreeDProperties = value;
            }
        }

        public TitleType Title
        {
            get
            {
                if (_Title == null)
                    _Title = new TitleType();
                return _Title;
            }
            set
            {
                _Title = value;
            }
        }

        public string ToolTip
        {
            get
            {
                return _ToolTip;
            }
            set
            {
                _ToolTip = value;
            }
        }

        public string Top
        {
            get
            {
                return _Top;
            }
            set
            {
                _Top = value;
            }
        }

        public ChartTypeType Type
        {
            get
            {
                return _Type;
            }
            set
            {
                _Type = value;
            }
        }

        public ValueAxisType ValueAxis
        {
            get
            {
                if (_ValueAxis == null)
                    _ValueAxis = new ValueAxisType();
                return _ValueAxis;
            }
            set
            {
                _ValueAxis = value;
            }
        }

        public VisibilityType Visibility
        {
            get
            {
                if (_Visibility == null)
                    _Visibility = new VisibilityType();
                return _Visibility;
            }
            set
            {
                _Visibility = value;
            }
        }

        public string Width
        {
            get
            {
                return _Width;
            }
            set
            {
                _Width = value;
            }
        }

        public Nullable<uint> ZIndex
        {
            get
            {
                return _ZIndex;
            }
            set
            {
                _ZIndex = value;
            }
        }

        public ChartType()
        {
            _KeepTogether = new Nullable<bool>[]();
            _PageBreakAtEnd = new Nullable<bool>[]();
            _PageBreakAtStart = new Nullable<bool>[]();
            _PointWidth = new Nullable<uint>[]();
            _ZIndex = new Nullable<uint>[]();
        }

        public ChartType Write()
        {
            // trial
            return null;
        }

    } // class ChartType

}

